package chapter07.s02bytestream.p03buffered;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;

/**
 * 文件的拷贝
 *
 * 文件的拷贝就需要通过输入流来读取文件中的数据，通过输出流将数据写入文件
 * 无缓冲区，效率低
 */
public class Example12 {
    public static void main(String[] args) throws Exception {
        // 创建一个字节输入流，用于读取当前目录下source文件夹中的文件
        InputStream in = new FileInputStream("src/chapter07/keras-mnist-model.h5");
        // 创建一个文件字节输出流，用于将读取的数据写入target目录下的文件中
        OutputStream out = new FileOutputStream("src/chapter07/keras-mnist-model2.h5");
        int len; // 定义一个int类型的变量len，记住每次读取的一个字节
        // 获取拷贝文件前的系统时间
        long begintime = System.currentTimeMillis();
        // 实现的文件拷贝是一个字节一个字节的读写，需要频繁的操作文件，效率非常低
        while ((len = in.read()) != -1) { // 读取一个字节并判断是否读到文件末尾
            out.write(len); // 将读到的字节写入文件
        }
        // 获取文件拷贝结束时的系统时间
        long endtime = System.currentTimeMillis();
        System.out.println("拷贝文件所消耗的时间是：" + (endtime - begintime) +
                "毫秒");
        in.close();
        out.close();
    }
}
